#include "App_Common.h"

long App_Common_GetCurrentTime(void)
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}

// [abcd] => "61626364"
char *App_Common_CharArrayToHex(char *array, int len)
{
    // 申请hexstr的内存
    char *hexstr = (char *)malloc(len * 2 + 1);
    // 遍历字符串的每个字符，得到其对应的2位16进制字符，并保存在hexstr中
    for (int i = 0; i < len; i++)
    {
        sprintf(hexstr + i * 2, "%02X", array[i]);
    }
    // 添加结束符号
    hexstr[len * 2] = '\0';
    return hexstr;
}

// "61626364" => [abcd]
char *App_Common_HexToCharArray(char *hexstr, int *array_len)
{
    // 得到hexstr的长度
    int hexstr_len = strlen(hexstr);
    // 得到保存字符数组的长度
    *array_len = hexstr_len / 2;
    // 申请array的内存
    char *array = (char *)malloc(hexstr_len / 2);
    // 遍历hexstr中的每个字符（以2个为单位），得到对应的字符，并保存到chars
    for (int i = 0; i < hexstr_len; i += 2)
    {
        sscanf(hexstr + i, "%2X", (unsigned int *)(array + i / 2));
    }
    return array;
}